﻿using System;
using System.ComponentModel;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace VideoReflector.Video
{
    /// <summary>
    /// Interface for controlling the recording of video from some source and writing to some output
    /// </summary>
    public interface IVideoRecorder : INotifyPropertyChanged, IDisposable
    {
        /// <summary>
        /// Start recording from video source
        /// </summary>
        void Start();

        /// <summary>
        /// Temporarily pause recording
        /// </summary>
        void Pause();

        /// <summary>
        /// Stop recording and write streamed data to output
        /// </summary>
        void Stop();

        /// <summary>
        /// True if recording has started, is not paused and has not been stopped
        /// </summary>
        bool IsRecording { get; }

        /// <summary>
        /// Time elapsed since beginning of recording (minus any paused periods)
        /// </summary>
        TimeSpan ElapsedTime { get; }
    }
}
